text:
Powering Care Coordination Through Mobility (mHealth Summit 2012 WIPJ…
Viafo - Making Your App Social (mHe... by wipjam 460 views
Tactio on Social Apps (mHealth Summ... by wipjam 643 views
WHAT IS BUSINESS TO DEVELOPER MARKE... by wipjam 1184 views
Elevate Your Research with Behavior... by Research Now 792 views
Connected Car - Ian Beavis, EVP at ... by wipjam 1116 views
Damian Long by MRS 521 views
1. Powering Care CoordinationThrough MobilitymHealth Summit 2012
2. Healthcare. Connected and Protected Diversinet’s scalable mobile health solutions offer an innovative enterprise-level platform approach to achieve interoperability, security and agility. HEALTHCARE. CONNECTED & PROTECTED 2
3. Secure Connected & Personalized Care Solutions Diversinet leads the healthcare industry with a secure enterprise mobile healthcare platform and integrated solutions. Which address some of the key challenges in mobile health Security and Agile Platform for App Interoperable Privacy Development & mApplications Integration HEALTHCARE. CONNECTED & PROTECTED 3
4. Mobile Security in a BYOD WorldAuthentication - Who Am I and Who Am I Talking to? People / Complexity- Passwords, 2 Factor (1-way / 2 way)Privacy - Encryption (Who do you trust?) –> ProvenanceDevice Management – the Ground Up View IssuesBeyond Security - Data Provenance Combination of Clinical + Extra Clinical Determinants of Health HEALTHCARE. CONNECTED & PROTECTED 4
5. Our Core Security Model Dynamic Authentication & Encryption MobiSecure Clients MobiPublisher Servers Bi-Lateral AuthenticationPin # Client Access Mobile Authenticates To The Server Data Encrypted InData Destroyed After StorageFailed Attempts SSL Pipe Tamper Proof AuditData is Encrypted Encrypted Data Exchange LogsClient Bound to Mobile Crypto libraries are FIPS 140-2 validated Server Authenticates To The DeviceOTP Generated on EverySession The HIT Policy Committee, which advises HHS/ONC, voted Sept. 6, 2012 to accept recommendations from its Privacy and Security Tiger Team to require multi-factor authentication for remote access to patient information for Stage 3 of the HITECH Act EHR Meaningful Use incentive program. HEALTHCARE. CONNECTED & PROTECTED 5
6. Mobile Application Interoperability Interoperable Mobile Apps mPHR+ Profile/Preferences Biometrics • Download PHR data • Health Profile • Weight • Share data securely • Care Goals • BP • Secure Messaging • Preferences • Pulse • Determinants of Health • Glucose • Others & Web PortalDATA SOURCES: EHR HIE Soap Soap Analytic Portal (WSI & CCD) Interfaces Blue Button Standard Medical Devices Configuration Manager mobiSurvey Manager CONTENT: Mobile Content Soap Care Pathways, Soap Messenger Deliver Across All Mobile Platforms Secure - Write Once Care Plans, Manager mobiMessengerPatient Education Mobisecure (Provisioning and Security) HEALTHCARE. CONNECTED & PROTECTED 7
7. Example of the Importance of mobile app interoperabilityReview of PatientGenerated Health Data• Mood tracker shows decline• Medication Adherence inconsistent• Eating patterns, physical activity, sleep, anxiety and depression data on decline ADHERENCE HEALTHCARE. CONNECTED & PROTECTED 8
Viafo - Making Your App Social (mHealth Summit 2012 WIPJam)
Tactio on Social Apps (mHealth Summit 2012 WIPJam)
Tech trends2016
jacklaber
In Car Commerce - Tobin Trevarthen, Founder at Spacial Shift
Doug Sillars on App Optimization

value: This website is an American hosting service, now owned by Scribd, for professional content including presentations, infographics, documents, and videos. Users can upload files privately or publicly in PowerPoint, Word, PDF, or OpenDocument format.


text:
Patent US20060080270 - Method for determining an access mode to a dataset - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA method and system are provided for identifying and selecting an optimal access method for reading an ILDS. A counter is associated with a pointer and identifies the number of times a database partition has been reorganized. Based upon a comparison of the counter from the pointer with a second counter...http://www.google.com/patents/US20060080270?utm_source=gb-gplus-sharePatent US20060080270 - Method for determining an access mode to a datasetAdvanced Patent SearchPublication numberUS20060080270 A1Publication typeApplicationApplication numberUS 10/960,531Publication dateApr 13, 2006Filing dateOct 7, 2004Priority dateOct 7, 2004Also published asUS7440936Publication number10960531, 960531, US 2006/0080270 A1, US 2006/080270 A1, US 20060080270 A1, US 20060080270A1, US 2006080270 A1, US 2006080270A1, US-A1-20060080270, US-A1-2006080270, US2006/0080270A1, US2006/080270A1, US20060080270 A1, US20060080270A1, US2006080270 A1, US2006080270A1InventorsShigeko MoriOriginal AssigneeShigeko MoriExport CitationBiBTeX, EndNote, RefManReferenced by (4), Classifications (8), Legal Events (4) External Links: USPTO, USPTO Assignment, EspacenetMethod for determining an access mode to a datasetUS 20060080270 A1Abstract A method and system are provided for identifying and selecting an optimal access method for reading an ILDS. A counter is associated with a pointer and identifies the number of times a database partition has been reorganized. Based upon a comparison of the counter from the pointer with a second counter from a second pointer, the optimal access method is determined. Since the comparison of pointers is conducted without reading the ILDS, the optimal access method is determined prior to reading the ILDS, which improves pointer checking performance. A direct access method may be selected if the access rate is lower than a predetermining threshold value, a sequential access method may be selected if the access rate is higher than a predetermined threshold value, and a skip sequential access method may be selected if the access rate is within a predetermined value. Images(8) Claims(18)
1. A method for accessing a dataset comprising: maintaining a first counter in a first database, wherein the first counter identifies a number of times the first database has been reorganized; maintaining a set of counters in a set of databases pointing to the first database, wherein each of the counters in said set of counters identifies a number of times an associated database has been reorganized; determining a maximum value among said first counter and the set of counters; calculating an access rate to the dataset based on a total number of data records in the dataset and a quantity of counters having a counter value less than said maximum value; and selecting an access method to the dataset based upon said calculated access rate. 2. The method of claim 1, further comprising selecting a direct access method if the access rate is lower than a predetermining threshold value. 3. The method of claim 1, further comprising selecting a sequential access method if the access rate is higher than a predetermined threshold value. 4. The method of claim 1, further comprising selecting a skip sequential access method if the access rate is within a predetermined value. 5. A method for accessing at least one dataset comprising: maintaining a counter in each partition of a first database, wherein the counter identifies a number of times each partition has been reorganized; maintaining a set of counters in a set of databases pointing to the first database, wherein each counter in said set of counters is maintained for each associated partition in one of the databases and identifies a number of times the associated partition has been reorganized; determining for each partition, a maximum value among said first counter and the set of counters; calculating for said partition an access rate to a dataset corresponding to each partition, wherein said access rate is based on a total number of data records in the dataset and the number of counters having counter values less than said maximum value; and selecting an access method for each partition to the dataset based upon said calculated access rate. 6. The method of claim 5, wherein the step of selecting an access method includes selecting a direct access method if the access rate is lower than a predetermining threshold value. 7. The method of claim 5, wherein said access method is a sequential access method if the access rate is higher than a predetermined threshold value. 8. The method of claim 5, wherein said access method is a skip sequential access method if the access rate is within a predetermined value. 9. An article comprising: a computer-readable signal bearing medium; means in the medium for maintaining a first counter in a first database, wherein the first counter identifies a number of times the first database has been reorganized; means in the medium for maintaining a set of counters in a set of databases pointing to the first database, wherein each of the counters in said set of counters identifiers a number of times an associated database has been reorganized; means in the medium for determining a maximum value among said first counter and said set of counters; means in the medium for calculating an access rate to a dataset based on a total number of data records in the dataset and a quantity of counters having a counter value less than said maximum value; and means in the medium for selecting an access method to a dataset based upon said calculated access rate. 10. The article of claim 9, wherein said medium is selected from a group consisting of: a recordable data storage medium, and a modulated carrier signal. 11. The article of claim 9, further comprising means in the medium for selecting a direct access method if the access rate is lower than a predetermining threshold value. 12. The article of claim 9, further comprising means in the medium for selecting a sequential access method if the access rate is higher than a predetermined threshold value. 13. The article of claim 9, further comprising means in the medium for selecting a skip sequential access method if the access rate is within a predetermined value. 14. An article comprising: a computer readable signal bearing medium; means in the medium for maintaining a counter in each partition of a first database, wherein the counter identifies a number of times each partition has been reorganized; means in the medium for maintaining a set of counters in a set of databases pointing to the first database, wherein each counter in said set of counters is maintained for each associated partition in one of the databases and identifies a number of times the associated partition has been reorganized; means in the medium determining for each partition a maximum value among said first counter and said set of counters; means in the medium for calculating for each partition an access rate to a dataset corresponding to each partition, wherein the access rate is based on a total number of data records in the dataset and the number of counters having counter values less than said maximum value; and means in the medium for selecting an access method for each partition to the dataset based upon said calculated access rate. 15. The article of claim 14, wherein said medium is selected from a group consisting of: a recordable data storage medium, and a modulated carrier signal. 16. The article of claim 14, further comprising means in the medium for selecting a direct access method if the access rate is lower than a predetermining threshold value. 17. The article of claim 14, further comprising means in the medium for selecting a sequential access method if the access rate is higher than a predetermined threshold value. 18. The article of claim 14, further comprising means in the medium for selecting a skip sequential access method if the access rate is within a predetermined value.
BACKGROUND OF THE INVENTION 1. Technical Field This invention relates to pointer checking in a database. More specifically, the invention relates to selecting an optimal record access method prior to opening any files. 2. Description Of The Prior Art Periodically databases need to be reorganized. This is generally due to that fact that databases tend to grow in an uneven manner resulting in a disorganized system with a commensurate degradation in performance. Reorganization of a database includes changing aspects of the logical and/or physical arrangement of the database. Over a period of usage, database management systems (DBMS) will require reorganization in order to restore database performance levels and maximize database capacity. During most types of reorganization, the area being reorganized is typically offline and unavailable to users. The data reorganization activity may result in data remaining unavailable for a substantial interval (i.e. hours or more). Therefore, it is desirable to reduce the amount of time the database is unavailable by reducing the number of steps involved in a database reorganization operation, and more specifically to reduce the number of steps involved in reorganizing a hierarchical database. A hierarchical database management system, such an IBM's IMS DL/I (IMS) manages data in a tree structure. Each data element is called a segment. The first data element is called the root segment of the structure. The root segment is the top of the tree and each subordinate segment is a child of the root or is a child of the child of the root segment or is a child further descended down from the root segment of the tree. One database is analogous to a forest containing many trees all of which share the same defined segment structure. IMS also utilizes keyed access directly to any segment in the database. Keyed access is provided through an index file containing pointers directed to the segments in the database. The use of the index allows for the locating of a desired element through the index as opposed to a sequential searching through a collection of elements. Indexing data by using direct pointers to data elements is common in databases managed by DBMS. It is well known in the art that a segment which otherwise can be pointed to directly, can also be pointed to indirectly through an index. However, indexing data is usually the result of a user defining the data for which an index is used, either beforehand or dynamically. One difficulty in managing hierarchical data is that logical relationships may exist between data elements in the same database or between specific data elements in different databases. As such, direct pointing between data segments in the same or different databases is managed through a relative byte address (RBA). Each segment has direct pointers consisting of RBA to which a segment points. When the logical relationship among multiple databases is defined, an application program can access the databases as one database. When a secondary database is defined with an index, an application program can access the indexed database faster than without the indexing. Accordingly, direct pointers are used to maintain the logical relationship among databases. A feature of the IMS provides the ability to partition each database thereby increasing storage capacity and improving availability. Each partition in the database may be separately reorganized when needed. During the reorganization of a partition, the RBA of a segment may be relocated. However, the direct pointer associated with the segment residing in a different database not subject to reorganization is not updated. To resolve this problem, an indirect pointer and reorganization number is provided. The reorganization number is the count of the number of times the partition has been reorganized. The indirect pointer contains the current RBA of the pointed segment. The indirect pointer is an intermediate pointer from the direct pointer to the current segment RBA. The direct pointer is related to the indirect pointer by an Indirect List Key (ILK). When a segment is inserted to a partition, the ILK is formed from the RBA of that segment, the current partition identifier, and the current partition reorganization number. As a result, the partitioned segment relies on the use of an ILK for various purposes. The indirect pointers are stored in a file known as an Indirect List Data Set (ILDS), which is a key sequenced data set. A data element in the ILDS is named as in Indirect List Element (ILE). The ILE consists of the ILK, partition identifier, the reorganization number, and the indirect pointer. There is one ILE for every segment involved in inter-record pointing. The ILEs are created or updated during a database reorganization and kept at the current values. The direct pointer is stored in an extended pointer set (EPS), which is part of the segment prefix. The EPS consists of the identifiers of the pointing segment, which are the partition identifiers, the reorganization number of the partition, the direct pointer, and the ILK. It should be noted, the EPS could have an older reorganization number than the current reorganization number since the EPS is not updated during reorganization. After a reorganization, IMS compares the reorganization number in the EPS with the current reorganization number in the partition. If the two reorganization numbers are the same, the direct pointer contains the current value of the reorganization number and the IMS does not need to refer to the ILE. However, if the two reorganization numbers differ, the IMS refers to the ILE for the current reorganization number and the segment RBA, and updates the EPS to the current value. The ILDS is a key sequenced data set of a virtual storage access method. There are three categories of methods for accessing a key sequenced data set: sequential, direct, and skip-sequential. Generally, satisfactory performance can be obtained by using the sequential access method to access a large quantity of records sequentially. Similarly, direct access generally provides satisfactory performance for accessing random keys, and skip sequential access generally provides satisfactory performance for accessing portions of records sequentially. As shown herein, the IMS contains many types of pointers in order to support the relationships among data sets. In order to maintain database integrity, the pointers of the database need to be validated. A pointer checker performs the pointer checking. It executes separated from the IMS. The pointer checker reads all segments in source databases and target databases, and validates the consistency of each pointer value and an associated segment RBA. The pointer checker also refers to the ILDS to check for the direct pointer, the indirect pointer, and the segment RBA in the same manner as the IMS. The prior art pointer checker cannot select the optimum access method for the ILDS before opening the ILDS, as such there is no established method for estimating an optimum access method to the ILDS without first reading the ILDS. Therefore, the pointer checker defaults to a sequential access method to read the ILDS as it lacks a method of determining an optimal access method without first accessing the ILDS. During the pointer check process, a target partition cannot be reorganized because the ILDS must be static. However, as the database changes, so do the number of reference ILEs. As a result, selection of an optimal access method can significantly decrease the time associated with ILDS access. Therefore, there is a need to identify an optimal access method before reading the ILDS to improve pointer checking performance. SUMMARY OF THE INVENTION This invention comprises selecting an optimal access method to a dataset. In one aspect of the invention, a method is provided for accessing a dataset. A first counter in a first database is maintained. The counter identifies the number of times the first database has been reorganized. A set of counters in a set of databases pointing to the first database is also maintained. Each of the counters in the set of counters identifies a number of times an associated database has been reorganized. In addition, a maximum value among the first counter and the set of counters is determined. An access rate for the dataset is calculated based upon the total number of data records in the dataset and a quantity of counters having a counter value less than the maximum value. Thereafter, an access method to the dataset is selected based upon the calculated access rate. In another aspect of the invention, a method is provided for accessing at least one dataset. A counter is maintained in each partition of a first database. The counter identifies a number of times each partition has been reorganized. A set of counters in a set of databases pointing to the first database is also maintained. Each counter in the set of counters is maintained for each partition in one of the database. In addition, each counter in the set of counters identifies a number of times the associated partition has been reorganized. For each partition, a maximum value among the first counter and the set of counters is determined. In addition, for each partition, an access rate to a dataset corresponding to each partition is calculated. The access rate is based on a total number of data records in the dataset and the number of counters having counter values less than the maximum value. An access rate for each partition to the dataset is selected based upon the calculated access rate. In yet another aspect of the invention, an article is provided in a computer-readable signal-bearing medium. Means in the medium are provided for maintaining a first counter in a first database. The first counter identifies a number of times the first database has been reorganized. Means in the medium are also provided for maintaining a set of counters in a set of databases pointing to the first database. Each of the counters in the set of counters identifiers a number of times an associated database has been reorganized. Means in the medium are provided for determining a maximum value among the first counter and the set of counters. Based on a total number of data records in the dataset and a quantity of counters having a counter value less than the maximum value, means in the medium for calculating an access rate to a dataset. Finally, means in the medium are provided for selecting an access method to a dataset based upon the calculated access rate. In a further aspect of the invention, an article is provided in a computer-readable signal bearing medium. Means in the medium are provided for maintaining a counter in each partition of a first database. The counter identifies a number of times each partition has been reorganized. In addition, means in the medium are provided for maintaining a set of counters in a set of databases pointing to the first database. Each counter in the set of counters is maintained for each associated partition in one of the databases and identifies a number of times the associated partition has been reorganized. Means in the medium are also provided for determining for each partition a maximum value among the first counter and the set of counters. For each partition, means in the medium for calculating an access rate to a dataset. The access rate is based on a total number of data records in the dataset and the number of counters having counter values less than the maximum value. Finally means in the medium are provided for selecting an access method for each partition to the dataset based upon the calculated access rate. Other features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiment of the invention, taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram of a reorganization table for a single partition. FIG. 2 is a flow chart illustrating a process for determining a maximum reorganization number in a single partition. FIG. 3 is a flow chart illustrating a process for selecting an optimal access mode in a single partition. FIG. 4 is a flow chart illustrating a process for assigning an access mode of the ILDS in a single partition. FIG. 5 is a block diagram of a reorganization table for multiple partitions. FIG. 6 is a flow chart illustrating a process for determining a maximum reorganization number for multiple partitions. FIG. 7 is a flow chart illustrating a process for selecting an optimal access mode for multiple partitions according to the preferred embodiment of this invention, and is suggested for printing on the first page of the issued patent.
DESCRIPTION OF THE PREFERRED EMBODIMENT Technical Details A table is compiled to organize information from a source database, i.e. a database which contains source partitions. FIG. 1 shows a diagram of one form of the table (10). There are three columns shown in this formative of the table (10). The first column (12) stores a maximum reorganization number from the pointer information. The pointer information is the EPS stored in each segment that contains the pointer, also known as a source segment. The reorganization number identifies the number of times the partition which contains the target segment(s), i.e. the target partition, has been reorganized. Similarly, the maximum reorganization number column (12) is intended to determine the maximum reorganization number in the source segments. The second column (14) stores the number of pointers having the maximum reorganization number. The third column (16) stores the number of pointers having a reorganization number less than the maximum reorganization number. Prior to comparing a dataset from a source database to a database which contains the target segments, i.e. the target partition, a pointer checker scans the source database to find the maximum reorganization number in the pointer information in the source segments. FIG. 2 is a flow chart (30) illustrating a process for counting the number of pointers and the maximum reorganization number in the pointer information extracted from the source database. A data segment is read, and associated pointer information is extracted from the segment (32). The reorganization number of the target partition is extracted from the pointer (34). Thereafter, a test is conducted to determine if the reorganization number extracted from the pointer at step (34) is greater than the maximum reorganization number (36). The maximum reorganization number is found at column (12) in the table shown in FIG. 1. A positive response to the test at step (36) is an indication that the table (10) needs to be updated. The maximum reorganization number at (12) is updated to reflect the value of the maximum reorganization number of the pointer (38). Thereafter, the number of pointers having a reorganization number less than the maximum reorganization number is updated (40) as the sum of the number of pointers having the maximum reorganization number and the number of pointers having a reorganization number less than the maximum reorganization number. That is, the number of pointers with the reorganization number less than the maximum reorganization number is changed to be the sum of the values at (14) and (16). In addition, the number of pointers with the maximum reorganization number at (14) is set to a value of one (42). However, a negative response to the test at step (36), will result in a subsequent test to determine if the reorganization number extracted from the pointer of the read segment at step (34) is equal to the maximum reorganization number (44). A positive response to this test (44) will result in increasing the value in the reorganization table (10) identifying the number of pointers having the maximum reorganization number (14) by a value of one (46). However, a negative response to the test at step (44) is an indication that the reorganization number of the segment read at step (32) is less than the maximum reorganization number (48). The number of pointers having a reorganization number less than the maximum reorganization number (16) is increased by an integer of one (50). Following steps (42), (46), and (50), a subsequent test is conducted to determine if there is additional source segment to be read (52). A positive response to the test at step (52) will return to step (32). However, a negative response to the test at step (52), is an indication that the pointer information from the source database has been obtained and accurate values have been read and/or updated in the reorganization table (54). Accordingly, the process of reading the source segments enables the reorganization table to accurately reflect the status of the pointers in the source database. Concurrently, with the process of updating the reorganization table, the extracted pointer information (32) is gathered and sorted in the key sequence of ILDS. Following the process of updating the reorganization table and sorting the extracted pointer information, an optimal method for accessing a dataset may be initiated. FIG. 3 is a flow chart (60) illustrating a process for selecting an optimal access method to the dataset. The reorganization number is read from the first record in the target partition (62), i.e. a partition which contains the target segments. Thereafter, a test (64) is conducted to determine if the number from step (62) is the same as the number in the first column of the reorganization table (12) of FIG. 1. A positive response to the test at step (64) indicates that the maximum reorganization number is the current reorganization number of the target partition. Thus, the pointers having the maximum reorganization number contain the current pointer value. Therefore, the pointers having the reorganization number less than the maximum reorganization number need to refer the corresponding ILE to get the current pointer value. This will result in assigning the value in the third column (16) of FIG. 1 to be the number of reference ILEs (66). However, a negative response to the test at step (64) indicates that any pointer does not have the current reorganization number. This will result in assigning the value of the sum of the second and third columns, (14) and (16) respectively, of the reorganization table (10) to be the number of reference ILEs (68). Following the assignment at either step (66) or step (68), the percentage ratio of the reference records is calculated (70) with the following formula: [(Number of reference ILEs)/(Total number of ILEs in the ILDS)]*100
Based upon the percentage ratio calculated at step (70), an optical method for accessing the ILDS is shown in flow chart (100) of FIG. 4. A test is conducted to determine if the percentage ratio of reference records is large (102). A positive response to the test at step (102), will result in an assignment of a sequential access of the ILDS (104). However, a negative response to the test at step (102) will result in a subsequent test to determine if the percentage ratio of reference records is small (106). A positive response to the test at step (106), will result in an assignment of a skip sequential access of the ILDS (108). Similarly, a negative response to the test at step (106), will result in a determination that the percentage ratio of reference records is very small and an assignment of a keyed direct access of the ILDS will take place (110). In one embodiment, a ratio greater than 5% would generally warrant selection of a sequential access method, a ratio between 0.5% and 5% would generally warrant selection of a skip sequential access method, and a ratio between 0 and 0.5% would generally warrant selection of a direct access method. The ratios provided herein together with the recommended access methods may be modified depending upon the number of records and the number of buffers, wherein the buffer is an area used for reading the ILDS. The methods for determining an optimal access method shown in FIGS. 2 and 3 are designed for a target database in one partition. In the pointer checking process, more than one target partition can be processed. For example, when multiple partitions are reorganized at once, the target segments can be moved to a different partition from where it originated. To manage segment relocation across partitions, a fourth field may be added to the reorganization table. FIG. 5 is a diagram (120) illustrating the reorganization table modified to undertake two or more partitions. As shown, there are now four columns. The first column (122) stores the maximum reorganization number from the pointer information. The pointer information is the EPS stored in each source segment. The second column (124) stores the number of pointers having the maximum reorganization number. The third column (126) stores the number of pointers having a reorganization number less than the maximum reorganization number. The fourth column (128) stores the number of pointers with a different partition identifier. The reorganization table shown herein is defined for every target partition identifier. Prior to comparing a dataset from a source database to one or more target partitions, the pointer checker scans the source database to find the maximum reorganization number in the pointer information in the source segment(s). FIG. 6 is a flow chart (140) illustrating a process for counting the number of pointers and the maximum value among the associated reorganization numbers. A data segment is read and associated pointer information is extracted from the segment (142). A reorganization number of a target partition and a partition identifier of the target partition are both extracted from the pointer information (144). Additionally, the partition identifier in which the target segment currently resides in is determined. In the following steps, the process refers to a reorganization table associated with the partition identifier in which the target segment currently resides. A test is conducted to determine if the partition identifier of the pointer is the same as the current partition identifier (146). A negative response to the test at step (146) will result in incrementing the number of pointers with different partition identifiers by an integer of one (148). Alternatively, a positive response to the test at step (146) will result in a subsequent test to determine if the reorganization number extracted from the pointer at step (144) is greater than the maximum reorganization number (150). The maximum reorganization number is found at (122) in table (120) shown in FIG. 5. A positive response to the test at step (150), is an indication that the table needs to be updated. The maximum reorganization number (122) is updated to reflect the value of the maximum reorganization number of the pointer (152). Thereafter, the number of pointers having a reorganization number less than the maximum reorganization number (126) is updated (154) as the sum of the values at (124) and (126). That is, the number of pointers having a reorganization number less than the maximum reorganization number (126) is changed to be the sum of the values at (124) and (126). In addition, the number of pointers with the maximum reorganization number at (124) is set to a value of one (156). However, a negative response to the test at step (150), will result in a subsequent test to determine if the reorganization number extracted from the pointer of the segment at step (144) is equal to the maximum reorganization number (158). A positive response to this test (158) will result in an increase in the value in the reorganization table identifying the number of pointers with the maximum reorganization number (124) by an integer of one (160). However, a negative response to the test at step (158) is an indication that the reorganization number extracted from pointer information of the segment at step (144) is less than the maximum reorganization number (162). The number of pointers having a reorganization number less than the maximum reorganization number (126) is increased by an integer of one (164). Following steps (148), (156), (160), and (164), a subsequent test is conducted to determine if there is additional source segment to be read (166). A positive response to the test at step (166) will return to step (142). However, a negative response to the test at step (166), is an indication that the pointer information from the source database has been obtained and accurate values have been read and/or updated in the reorganization table (168). Accordingly, the process of reading the source segment(s) enables the reorganization table(s) to be updated to accurately reflect the status of the pointers in the source database. Concurrently with the process of updating the reorganization table shown in FIG. 6, the extracted pointer information (144) is gathered by the current target partition identifier and sorted in the key sequence of ILDS. Following the process of updating the reorganization table and sorting the extracted pointer information, an optimal method for accessing a dataset may be initiated. FIG. 7 is a flow chart (180) illustrating a process for selecting an optimal access method to an ILDS associated with a reorganization table for a target partition. The maximum reorganization number is read from the first record of the target partition dataset (182). Thereafter, a test is conducted to determine if the number from step (184) is the same as the number in the first column of the reorganization table (122) obtained at step (166) of FIG. 6. A positive response to the test at step (184) indicates that the maximum reorganization number is the current reorganization number of the target partition. Thus, the pointers having the maximum reorganization number contain the current pointer value. Therefore, the pointers having the reorganization number less than the maximum reorganization number need to refer to the corresponding ILE to get the current pointer value. This results in assigning the number of reference ILEs (186) as the sum of the values in the third and fourth columns (126) and (128), respectively, of the table (120). However, a negative response to the test at step (184) indicates that any pointer does not have the current reorganization number. This results in assigning the number of reference ILEs (188) as the sum of the values in the second, third, and fourth columns (124), (126), and (128), respectively, of the table (120), i.e. the number of pointers with different partition identifier (128) is added to the number of reference ILEs. The pointers having the different partition identifier indicate that they are relocated from a partition other than the current partition. Thus, these pointers need to refer to the corresponding ILE to get the current pointer value. Following the assignment at steps (186) or (188), the percentage ratio (190) of the reference ILEs is calculated with the following formula: [(Number of reference ILEs)/(Total number of ILEs in the ILDS)]*100
Based upon the percentage ratio calculated at step (190), an optical method for accessing the ILDS is determined in the same manner as shown in flow chart (100) of FIG. 4. Accordingly, an optimal ILDS access method may be selected to incorporate multiple segments from multiple partitions. Advantages Over The Prior Art The provision of estimating the ratio of the number of reference ILEs to the total number of ILEs in the ILDS for a single partition or a multiple partition environment enables the pointer checker to determine the rate of accessing records prior to opening the ILDS. The process of selecting an optimal method for reading the ILDS prior to opening improves operating efficiency of the dataset. Alternative Embodiments It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. In particular, an alternate method may be employed if it is known during the scan process that the target partition has never been reorganized. The alternate process for determining an optimal access mode is to obtain the current reorganization identifier from the target partition at the beginning of the scan process of the source database(s). The scan process extracts the pointer information only when the partition identifier or the reorganization identifier are different from the target value. This process is valid and effective for reducing the number of times the system must extract pointer information. In another embodiment, a user specified parameter may be provided to select the logic to be employed in determining an optimal access mode. Accordingly, the scope of protection of this invention is limited only by the following claims and their equivalents. Referenced byCiting PatentFiling datePublication dateApplicantTitleUS7562077 *Mar 28, 2005Jul 14, 2009Netapp, Inc.Method and apparatus for generating and describing block-level difference information about two snapshotsUS7624106Sep 29, 2004Nov 24, 2009Network Appliance, Inc.Method and apparatus for generating user-level difference information about two data setsUS8140565Jan 20, 2009Mar 20, 2012International Business Machines CorporationAutonomic information management system (IMS) mainframe database pointer error diagnostic data extractionUS8185701Feb 5, 2008May 22, 2012International Business Machines CorporationSystem and method for an adaptive list prefetch* Cited by examinerClassifications U.S. Classification1/1, 707/E17.005, 707/999.001International ClassificationG06F17/30Cooperative ClassificationY10S707/99932, G06F17/30339, Y10S707/99942European ClassificationG06F17/30S2TLegal EventsDateCodeEventDescriptionDec 11, 2012FPExpired due to failure to pay maintenance feeEffective date: 20121021Oct 21, 2012LAPSLapse for failure to pay maintenance feesJun 4, 2012REMIMaintenance fee reminder mailedMay 25, 2005ASAssignmentOwner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MORI, SHIGEKO;REEL/FRAME:016275/0260Effective date: 20041007RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google

type: global

value: This website is a search engine provided by Google. Handling over 3.5 billion searches per day, it has a 92% share of the global search engine market.


text:
Austerity is for the English | Paul Kingsnorth | Opinion | The Guardian
Austerity is for the English
The cuts will hit England hardest. Why doesn't it have its own parliament like the rest of Britain?
Friday 22 April 2011 03.30 EDT
Here is a question for St George's Day: how should England respond to the government's austerity agenda? If it sounds like an odd question, it is only because we never ask it.
We know what we stand to lose from the ongoing public service cuts: affordable university education; state support for many higher education courses; a health service that operates in the interests of patients rather than accountants; publicly owned forests; state support for arts, cultural bodies and voluntary services; libraries and swimming pools.
But who is "we"? The answer, in all the cases named above, is the English.
Austerity will affect the whole of the UK, but most of its blows are landing on England. In Scotland, if you go to your GP – who will not be commissioning services under the Lansley plan because it doesn't apply there – and he gives you a prescription, it does not cost you the £7.40 it costs you in England; it's free. Your forests are not for sale, because Westminster does not have the power to sell them. Your libraries, schools and sports centres cannot be closed by the coalition either. If a Scottish student goes to university in Edinburgh, it's free, and the state pays for the courses. English students pay through the nose.
This looks achingly unfair. But it has happened for a reason. The reason is that the Scottish have their own government, which acts as a buffer against decisions made in Westminster. Why do the Scots have this? Because of decades of campaigning by a population determined to assert its sovereignty. A similar situation applies in Wales.
We know who speaks for Scotland and for Wales. But who speaks for England? The British prime minister, like his predecessor, won't even mention the word unless he's praising the football team. His government at Westminster speaks for and of Britain. So do the protesters who oppose him. UK Uncut never mentions the fact that much of what it opposes does not apply to the whole UK. The group 38 Degrees is campaigning to save "our NHS" when the NHS outside England is not at risk. Who speaks for England? Nobody, it seems.
There are reasons for this. For centuries, England dominated the union, and many of the English lazily assumed that England and Britain were the same thing. These days, we are being forced to wake up to the fact that this is not true, and never has been.
As we do, we wake up to grievances. Is it fair that Scottish and Welsh MPs can make our laws while we can't make theirs? That the devolution settlement has given the people of three of the four British nations a vote on their national destiny but denied it to the largest? That Scottish citizens get more money from the Treasury per head than the English? That we are the only nation in Europe without our own government or parliament?
No. None of it is fair. But if we want it to change we have to do something. We are going through a fascinating historical period, full of pain but also of opportunity. Perhaps it gives us a chance to create our own radical narrative.
I say "create", but the narrative is already there. England has a deep history of resistance to the alliance of state and property, which the radical writer William Cobbett called "the Thing". We might focus on resistance to the land thefts known as the inclosures, which forced self-sufficient rural communities into urban slums; or the peasants' revolt; or the uprising of Jack Cade; or the civil war radicals; or the anti-capitalist rebellion of the Luddites, which happened two centuries ago this year. The story is there, waiting for us.
This St George's Day, we should give some thought to writing it. We could link the current attacks by the British state on English public life with our lack of political representation. In the name of our historic freedoms, we could call for English home rule – for the return of the English parliament, lost like that of the Scots to the Act of Union. This would give us a national narrative a million miles away from the establishment tale of royal weddings and military interventions.
At heart, this is an issue of sovereignty. When the Scottish reclaimed their nationhood from Westminster, they asserted the sovereignty of their citizens. The English case is the same. Who owns the English NHS, English forests, English libraries? Not David Cameron. Not the British state: the English people.
Talking about economics and politics is never enough. If you want change, you need to speak to people about their culture; appeal to their sense of belonging and ownership. There is power in history, and in narratives of nationhood, and there can be a deep radicalism in standing up for our rights, knowing who we are, in an increasingly plastic, corporate world.

value: This website is a British news and media website owned by the Guardian Media Group. It contains nearly all of the content of the newspapers The Guardian and The Observer, as well as a substantial body of web-only work produced by its own staff, including a rolling news service.


text:
Checking for exported symbols/functions in a DLL without loading it - CodeProject 11,177,918 members (82,021 online)
C++pluginDLL Related Articles
Checking for exported symbols/functions in a DLL without loading it pasztorpisti, 19 Dec 2010
4.85/5 - 22 votesμ 4.86, σa 0.96 [?]
You can find out if a DLL exports some symbols/functions without calling LoadLibrary() on it	The tip/trick title speaks for itself. I give you a simple function that takes a file name and a list of symbols/function names, and it returns true if the specified file is a DLL that exports all of the specified symbols. Detecting exports by ordinal numbers are not supported because I wasn't in need of that, but if someone needs it and I have the time, then I can put it in easily because it's easier to check than the exports by names. All this is done without loading the DLL, thus avoiding execution of a possibly dangerous DllMain() of an unwanted DLL in your process. It works with both 32 and 64 bit binaries. I used it in a plugin system to safely detect some plugins of older versions in a program. Use this code only when reasonable because checking all DLLs with this before all LoadLibrary() calls can slow down your plugin initialization code in a system with lot of plugins (eg.: GIMP)!!!
That's all folks! stdafx.h:
#include <winnt.h> // must be after windows.h
stdafx.cpp:
CheckForDllExportedSymbols.h:
#ifndef __CHECK_FOR_DLL_EXPORTED_SYMBOLS_H__
#define __CHECK_FOR_DLL_EXPORTED_SYMBOLS_H__
enum ECFESResult
eCFES_OK,
eCFES_MissingFunctions,
eCFES_ErrorOpeningFile,
eCFES_ErrorReadingFile,
eCFES_InvalidDosHeader,
eCFES_InvalidNTHeader,
eCFES_NotDLL,
eCFES_DLLStructureError,
// Checks if the specified file is a real DLL that exports all
// the specified functions.
ECFESResult CheckForExportedSymbols(LPCTSTR dll_path,
const char* symbols[], int symbol_count);
CheckForDllExportedSymbols.cpp:
#include "CheckForDllExportedSymbols.h"
struct SRVAToFileOffset : public std::vector<IMAGE_SECTION_HEADER>
DWORD operator()(DWORD RVA) const
for (const_iterator it=begin(), eit = end(); it != eit; ++it)
if (RVA >= it->VirtualAddress && RVA < it->VirtualAddress +
it->Misc.VirtualSize)
return RVA - it->VirtualAddress + it->PointerToRawData;
class CCFESFile
CCFESFile() : m_hFile(INVALID_HANDLE_VALUE) {}
~CCFESFile()
bool OpenForRead(LPCTSTR file_path)
m_hFile = CreateFile(file_path, GENERIC_READ, FILE_SHARE_READ, NULL,
return m_hFile != INVALID_HANDLE_VALUE;
bool Read(void* buffer, DWORD bytes_to_read,
DWORD file_offset = 0xFFFFFFFF, DWORD* bytes_read = NULL)
assert(m_hFile != INVALID_HANDLE_VALUE);
if (file_offset < 0xFFFFFFFF)
DWORD new_file_offset = SetFilePointer(m_hFile, (LONG)file_offset,
NULL, FILE_BEGIN);
if (new_file_offset != file_offset)
if (!ReadFile(m_hFile, buffer, bytes_to_read, &read, NULL))
if (!bytes_read)
return read == bytes_to_read;
*bytes_read = read;
class CCheckForExportedSymbols
CCheckForExportedSymbols();
bool ReadHeaders(int symbol_count);
bool CheckSymbols(const char* symbols[], int symbol_count);
bool Error(ECFESResult res);
DWORD file_offset = 0xFFFFFFFF);
ECFESResult m_Result;
CCFESFile m_File;
IMAGE_DATA_DIRECTORY m_ExportDirLocation; // RVA and size
SRVAToFileOffset m_RVAToFileOffset;
CCheckForExportedSymbols::CCheckForExportedSymbols()
: m_Result(eCFES_OK)
memset(&m_ExportDirLocation, 0, sizeof(m_ExportDirLocation));
bool CCheckForExportedSymbols::ReadHeaders(int symbol_count)
IMAGE_DOS_HEADER dos_hdr;
if (!Read(&dos_hdr, sizeof(dos_hdr)))
if (dos_hdr.e_magic != IMAGE_DOS_SIGNATURE)
return Error(eCFES_InvalidDosHeader);
IMAGE_NT_HEADERS64 hdr;
if (!Read(&hdr, sizeof(hdr)
- sizeof(hdr.OptionalHeader) + sizeof(WORD), dos_hdr.e_lfanew))
if (hdr.Signature != IMAGE_NT_SIGNATURE)
return Error(eCFES_InvalidNTHeader);
if (hdr.OptionalHeader.Magic !=
IMAGE_NT_OPTIONAL_HDR32_MAGIC &&
hdr.OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR64_MAGIC)
if ((hdr.FileHeader.Characteristics & IMAGE_FILE_DLL) == 0)
return Error(eCFES_NotDLL);
// In case of zero function names we only check for the validity of the DLL
if (symbol_count <= 0)
return Error(eCFES_OK);
DWORD opt_hdr_size = min((DWORD)sizeof(hdr.OptionalHeader),
(DWORD)hdr.FileHeader.SizeOfOptionalHeader);
if (hdr.OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
// 32 bit binary
if (opt_hdr_size < offsetof(IMAGE_OPTIONAL_HEADER32,
DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT+1]))
return Error(eCFES_MissingFunctions);
if (!Read((WORD*)&hdr.OptionalHeader.Magic + 1,
opt_hdr_size - sizeof(WORD)))
IMAGE_NT_HEADERS32 &hdr32 = *(IMAGE_NT_HEADERS32*) & hdr;
if (hdr32.OptionalHeader.NumberOfRvaAndSizes
< IMAGE_DIRECTORY_ENTRY_EXPORT + 1)
m_ExportDirLocation =
hdr32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
// 64 bit binary
if (opt_hdr_size < offsetof(IMAGE_OPTIONAL_HEADER64,
if (hdr.OptionalHeader.NumberOfRvaAndSizes
hdr.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
// reading the section headers in order to be able to calculate file
// offsets from RVAs
if (hdr.FileHeader.NumberOfSections)
m_RVAToFileOffset.resize(hdr.FileHeader.NumberOfSections);
DWORD section_header_file_offset = dos_hdr.e_lfanew + sizeof(
hdr.Signature) + sizeof(hdr.FileHeader)
+ hdr.FileHeader.SizeOfOptionalHeader;
if (!Read(&m_RVAToFileOffset[0], hdr.FileHeader.NumberOfSections
* sizeof(IMAGE_SECTION_HEADER), section_header_file_offset))
bool CCheckForExportedSymbols::CheckSymbols(const char* symbols[],
int symbol_count)
// finding out the length of the longest function name that we are
// looking for
<DWORD> symbol_lengths;
DWORD max_funcname_len = 0;
for (int i = 0; i < symbol_count; ++i)
DWORD len = (DWORD)lstrlenA(symbols[i]);
symbol_lengths.insert(len);
max_funcname_len = max(max_funcname_len, len);
// reading the export directory
assert(m_ExportDirLocation.Size >= sizeof(IMAGE_EXPORT_DIRECTORY));
IMAGE_EXPORT_DIRECTORY export_dir;
if (!Read(&export_dir, sizeof(export_dir), m_RVAToFileOffset(
m_ExportDirLocation.VirtualAddress)))
if (export_dir.NumberOfNames < (DWORD)symbol_count)
// Collecting the function names exported by the DLL. We omit function
// names whose length doesn't match
// the length of any of the function names that we are searching for.
std::vector<DWORD> exported_symbol_rvas;
exported_symbol_rvas.resize(export_dir.NumberOfNames);
if (!Read(&exported_symbol_rvas[0], sizeof(DWORD)*export_dir.NumberOfNames,
m_RVAToFileOffset(export_dir.AddressOfNames)))
<std::string> exported_symbols;
std::vector<char> buf(max_funcname_len + 1, 0);
for (std::vector<DWORD>::const_iterator it = exported_symbol_rvas.begin(),
eit = exported_symbol_rvas.end(); it != eit; ++it)
if (!m_File.Read(&buf[0], max_funcname_len + 1, m_RVAToFileOffset(*it),
&read))
return Error(eCFES_ErrorReadingFile);
DWORD buf_size = min(max_funcname_len + 1, read);
for (DWORD i = 0; i < buf_size; ++i)
if (len >= buf_size)
if (!symbol_lengths.count(len))
exported_symbols.insert(&buf[0]);
if ((int)exported_symbols.size() < symbol_count)
if (!exported_symbols.count(symbols[i]))
bool CCheckForExportedSymbols::Error(ECFESResult res)
m_Result = res;
bool CCheckForExportedSymbols::Read(void* buffer, DWORD bytes_to_read,
DWORD file_offset)
if (!m_File.Read(buffer, bytes_to_read, file_offset, &read))
if (read != bytes_to_read)
return Error(eCFES_DLLStructureError);
ECFESResult CCheckForExportedSymbols::CheckForExportedSymbols(LPCTSTR dll_path,
const char* symbols[], int symbol_count)
if (!m_File.OpenForRead(dll_path))
return eCFES_ErrorOpeningFile;
if (!ReadHeaders(symbol_count))
if (!CheckSymbols(symbols, symbol_count))
return eCFES_OK;
ECFESResult CheckForExportedSymbols(LPCTSTR dll_path, const char* symbols[],
CCheckForExportedSymbols CFES;
return CFES.CheckForExportedSymbols(dll_path, symbols, symbol_count);
static const TCHAR DLL[] = TEXT("e:\\PluginDLL.dll");
static const char* EXPORTED_SYMBOLS[] = { "fnPluginDLL" };
printf("%d\n", CheckForExportedSymbols(DLL,
EXPORTED_SYMBOLS,
sizeof(EXPORTED_SYMBOLS) / sizeof(EXPORTED_SYMBOLS[0])));
My vote of 5 gndnet8-Aug-12 2:33 great
Very nicely done! I using the same t... nv313-Dec-11 4:40 Reason for my vote of 5
Very nicely done! I using the same technique in a library to detect the presence and version of plug-ins in a bigger project. It's much faster than loading the DLL, even with the DONT_RESOLVE_DLL_REFERENCES switch. With a couple more lines you can even inspect the data contents of global symbols and version resources. That's a very powerful tool.
I like the way you implemented SRVAtoFileOffset!
nice article erewrwerq20-Dec-10 17:28 Reason for my vote of 5
new information for me and its usefu... mutpan13-Dec-10 19:56 Reason for my vote of 5
new information for me and its useful.
@SledgeHammer01: Actually you pointed out something that was... pasztorpisti6-Dec-10 23:37 @SledgeHammer01: Actually you pointed out something that was missing from the article. The reasoning part was patched into the tip yesterday. Anyway, calling LoadLibrary() and GetProcAddress() are indeed much simpler than spending at least days to research the PE format. @Member 4320844: I can detect only that is found in the DLL export table. That consists of a list of names, and associated addresses (RVAs that point to something, actually these can point to anything but they are usually function entrypoints or variables).
Another thing that isn't handled by the code is exports by ordinals, not by names. Actually this would be easier to implement than checking for export by names, but I wasn't in need of that, I can implement it if someone needs the stuff. And, yes, checking all your plugins with this function before loading then can make plugin loading much slower (for example in a system with billions of plugins like GIMP). But if you have such a system then design your plugs to support versioning somehow, maybe with the filename, or append a few bytes to the end of your binaries, or something else... And use this only if its reasonable.
It will be great if this peace of co... Member 43208446-Dec-10 20:16 Reason for my vote of 5
It will be great if this peace of code can detect all
implicit functions in a DLL
in programming point of view.
@pasztorpisti: Fair enough. That is something I did not thin... SledgeHammer016-Dec-10 20:02 @pasztorpisti: Fair enough. That is something I did not think about . I have revised my vote.
5 for taking the time to write an ar... DRLaverdure6-Dec-10 15:50 Reason for my vote of 5
5 for taking the time to write an article and 5 for the concept. I can only vote once though so you will have to settle with 5
I used this to detect older versions of some plugins in a sy... pasztorpisti6-Dec-10 15:33 I used this to detect older versions of some plugins in a system that supported plugins of the previous versions of the program. Some of the older version plugins were dangerous to load because of their activity in their DllMain() that is executed in your process before LoadLibrary() returns. In that case this is the good solution and not LoadLibrary().
Wouldn't LoadLibrary() and GetProces... SledgeHammer016-Dec-10 14:38 Reason for my vote of 2
Wouldn't LoadLibrary() and GetProcessAddress() do the same thing? Seems like an overkill solution when the Windows API already has a way to do this.
LoadLibraryEx waleri11-Feb-11 2:31 I believe LoadLibraryEx() with DONT_RESOLVE_DLL_REFERENCES flag will do the same
Re: LoadLibraryEx pasztorpisti11-Feb-11 9:30 Your are right. I didn't know this flag, but probably because according to MSDN it is present only in Win2000 and newer. Our prog was an old Win95 compatible workhorse. Haven't tried it, but if it acts as the MSDN doc claims, then this is a valid alternative solution!
Automatic Finder for DLL contents(methods) Member 43208446-Dec-10 20:11 Hi dear, First of all, thanks for the article.
I wished if your code has the ability to find out the contents of DLL's,
such that one could be able to seek and run what ever likely functions(methods with parameters) found in
any searched DLL. For example System DLL's and any other Networking or security dll's. Thanks very much.
I don't know if your code is able to do that? ... It will be great.
My best Vote for you 4 .
Re: Automatic Finder for DLL contents(methods) pasztorpisti6-Dec-10 23:58 All you can find out from the export table of a DLL is some symbol names, and some ordinals, each of them having an address associated. Unfortunately we don't have extra info like parameter names or variable types like in .Net assemblies, unless you have some debug info in the DLL.
Re: Automatic Finder for DLL contents(methods) Member 43208447-Dec-10 3:49 Thanks for your nice reply.
Still I wish if any one who finds out away to extract complete information s about
the functions(& parameters) in DLL's to inform me, I will be thank full. Thanks again, and wish you more success.
Re: Automatic Finder for DLL contents(methods) JackDingler15-Mar-12 7:23 You can't extract information that isn't there.
Re: Automatic Finder for DLL contents(methods) Member 432084415-Mar-12 10:30 Sure, you are right, but my question may not be understood.
Actually I wanted to know that:
How one can extract and print a list of names & parameters of what ever functions available inside any DLL ?, so that we can use them by calling them in a test to know their capabilities .. and so on, & that will be great.
Re: Automatic Finder for DLL contents(methods) JackDingler15-Mar-12 10:39 That would be great.
But not all of the information you want is present in the DLL.
You can discover the function name and the number of arguments, but not what argument data types are expected, or what their expected values are.
Technologies that address these issues get more complicated, see CORBA, COM, DCOM...
Thanks for the code! T800G6-Dec-10 7:51 I'm trying to learn a bit about the 'inside PE' stuff myself and I think this will help me grasp all those headers and fields.
Last Visit: 31-Dec-99 19:00 Last Update: 26-Jan-15 1:59Refresh1
Views 20,198
Last Updated 19 Dec 2010	Article Copyright 2010 by pasztorpistiEverything else

value: This website is a community for computer programmers with articles on different topics and programming languages such as web development, software development, C++, Java, and other topics. Once a visitor registers a user account on the site, they can gain reputation which allows users to unlock different privileges such as the ability to store personal files in the user's account area, have live hyperlinks in their profile biography, and more.


text:
The New Moderns: Architects and Interior Designers of the 1990's by Jonathan Glancey, Richard Bryant, Richard Bryant (Illustrator) - New, Rare & Used Books Online at Alibris Marketplace
The New Moderns: Architects and Interior Designers of the 1990's	by
This book presents the work and philosophy of the newest wave of international architects and interior designers of the 1990s, distinguished by their ...
This book presents the work and philosophy of the newest wave of international architects and interior designers of the 1990s, distinguished by their light, uncluttered and spacious approach. As well as taking the reader inside custom-designed homes throughout the world, many of them hitherto unseen, it shows how the New Modern look can be achieved on a limited budget and with limited space, showing which furnishings and fittings complement the style, and including a comprehensive directory of sources and designers.
The New Moderns: Architects and Interior Designers of the 1990's – Paperback
by Jonathan Glancey, Richard Bryant
ISBN: 1857324382
ISBN-13: 9781857324389
Modern World Architecture: The Structures That Shaped the Modern World
Modern-100 Jahre Wohndesign
Die Neue Moderne. Wohnen in Den 90er Jahren
Jonathan; Bryant Glancey, Richard
Title: The New Moderns
Jonathan Glancey, Richard Bryant
9781857324389
Edition: Reprint. First published in 1990.
Publisher: Mitchell Beazley, Description: bryant, Richard. New. No dust jacket as issued. Excellent...
bryant, Richard. New. No dust jacket as issued. Excellent condition! 191 p. Includes: illustrations, index. The first definitive guide to the architectural and interior design style of the 1990. Includes a comprehensive directory of New Modern architects, interior designers and specialists sources of furniture and fittings. SATISFACTION GUARANTEED! ! !
Reviews of The New Moderns: Architects and Interior Designers of the 1990's
Discussions about The New Moderns: Architects and Interior Designers of the 1990's
Subjects related to The New Moderns: Architects and Interior Designers of the 1990's
Interior design : twentieth century
Design : twentieth century

value: This website is is an online store that sells new books, used books, out-of-print books, rare books, and other media through an online network of independent booksellers.


text:
Asiento del Alma, El by Gary Zukav - New, Rare & Used Books Online at Alibris Marketplace
Buy it from $12.09
You save: $8.86 (42%)
You save: $7.71 (37%)
Publisher: OBELISCO PUB INC
Description: New. The Seat of the Soul led the way to seeing the alignment...
New. The Seat of the Soul led the way to seeing the alignment of the personality with the soul as the fulfillment of life and captured the imagination of tens of millions. It presents the fundamentals of authentic power, the tools required to create itemo...
You save: $5.97 (28%)
Publisher: Obelisco, Description: New. Text in Spanish. Trade paperback (US). Glued binding. 256...
Publisher: Obelisco, Description: Fine. Text in Spanish. Trade paperback (US). Glued binding. 256...
Fine. Text in Spanish. Trade paperback (US). Glued binding. 256 p.


text:
Bloomberg the Company & Its Products Bloomberg Anywhere Remote Login Bloomberg Terminal Demo Request Bloomberg Connecting decision makers to a dynamic network of information, people and ideas, Bloomberg quickly and accurately delivers business and financial information, news and insight around the world. Company Careers Diversity & Inclusion Philanthropy & Engagement Sustainability Technology History & Facts Financial Products Bloomberg Terminal Bloomberg Tradebook Bloomberg Briefs Bloomberg Indices Bloomberg SEF Bloomberg Institute Enterprise Products Enterprise Solutions Trading Solutions Bloomberg Vault Bloomberg PolarLake Media Bloomberg Business Bloomberg Politics Bloomberg View Bloomberg Gadfly Bloomberg Television Bloomberg Radio Bloomberg Mobile Apps News Bureaus Customer Support Americas +1 212 318 2000 Europe, Middle East, & Africa +44 20 7330 7500 Asia Pacific +65 6212 1000 Communications Press Announcements Press Contacts Industry Products Bloomberg Government Bloomberg Law/BNA Bloomberg Big Law Bloomberg New Energy Finance Media Services Advertising Bloomberg Content Service Bloomberg Live Conferences Follow Us Facebook Twitter LinkedIn Instagram Bloomberg Customers Bloomberg Anywhere Remote Login Download Software Service Center Menu News Markets Insights Video Now Reading: Search Americas Europe Asia Watch Listen Latest World Industries Science+Energy Technology Design Culture Graphics Pursuits View Gadfly U.S. Politics Businessweek Stocks Currencies Commodities Rates+Bonds Magazine Benchmark Watchlist Economic Calendar Latest Game Plan Business Schools Small Business Personal Finance Profiles Sponsored: Board Directors' Forum Watch Now Video Schedule + Shows Audio Events INFORMATION TECHNOLOGY SECTOR » SOFTWARE INDUSTRY » DSY dassault systemes s-spon adr (DSY:Frankfurt)
DSY On Other Exchanges	SymbolExchange DSY:FPEN ParisDSY1:GRStuttgartDASTF:USOTC USDASTY:USOTC USDSYNV:FPEN ParisDSYN:MMMexicoDSY:GRFrankfurt
text size: T | TBack to SnapshotCompany DescriptionContact Info10, rue Marcel DassaultVélizy-Villacoublay, 78946FrancePhone: 33 1 61 62 61 62Fax: 33 1 70 73 43 63 www.3ds.com
kr270.10 SEK
To contact DASSAULT SYSTEMES S-SPON ADR, please visit www.3ds.com. Company data is provided by Capital IQ. Please use this form to report any data issues.

value: This website is an international news agency headquartered in New York City and a division of Bloomberg L.P. Content produced by Bloomberg News is disseminated through Bloomberg Terminals, Bloomberg Television, Bloomberg Radio, Bloomberg Businessweek, Bloomberg Markets, Bloomberg.com, and Bloomberg's mobile platforms. Since 2015, John Micklethwait has served as editor-in-chief.


text:
Also, there's no restaurant in the hotel, only a... - Review of BEST WESTERN Acadia Park Inn - TripAdvisor
New! You come to us for reviews — now you can book your hotel right here on TripAdvisor. Also, there's no restaurant in the hotel, only a... - Review of BEST WESTERN Acadia Park Inn
“Other than location possible view this hotel...”
“Great restaurant close by The Log Cabin where...”
“Nothing special, no views, thin walls the people...”
“Near entrance to Acadia national park”
“The lady who works in the restaurant is very...”
“Nice hotel with a few minor "dislikes"!”
See the most recent reviews GotTravelBug1
Traveler tips help you choose the right room. Room tips (133) 1,045 reviews sorted by:
Dutch first English first French first German first Italian first Korean first Spanish first Any Travelmomkap
We stayed here Columbus Day weekend and had a blast. I went on a nice 3.1 mile run down shore path for am exercise, the kids went in the heated to 85 degrees pool, even when it was only 65 degrees outside. The huge full free breakfast was a great way to start each day (eggs, sausage, french toast, bagels, cereal, bananas, apples, etc). The free cookies and hot coco and coffee were a great way to end each day. The location was close for driving to Acadia (1 mile?) or Bar Harbor (5 miles?). There is a cute mini golf land (Pirates?) within walking distance of hotel for pm activity. There are a few resturants with in walking distance for dinner too. The rooms have been remodled and look new. The beds were comfortable and clean. The bathroom was clean and new too. I would definately stay here again for all the freebies and location!! Great deal!
Helpful? Thank Travelmomkap Report Ask Travelmomkap about BEST WESTERN Acadia Park Inn
This review is the subjective opinion of a TripAdvisor member and not of TripAdvisor LLC. GoPackers38
Level Contributor 12 reviews 3 helpful votes “Clean and friendly”
Room was very clean and quiet. The staff was very friendly and accommodating. About 8 min drive into town. Breakfast was included and was just ok. Close to Acadia national Park. Would definitely stay there again.
Thank GoPackers38 Report Ask GoPackers38 about BEST WESTERN Acadia Park Inn
We are very happy that you found our rooms clean and quiet and our staff friendly! It is just a short jaunt to Bar Harbor proper and the ride is certainly lovely. Our free deluxe continental breakfast features a hot meat (either sausage or bacon) and two hot egg items as well as hard boiled eggs, yogurt,muffins,Danish,cereals,juices,fruits (both fresh and mixed tropical)a variety of toasts, Engliush muffins, waffles, french toast, and bagels. If you are looking for more variety we can recommend several nice local restaurants for a made to order breakfast.We hope you will come see us again.Thank you. Jane Koehling, Property Managert
The Best Western Acadia is a very nice motel. The check in process was very good. The front desk were very polite and provided plenty of information about the property and local area.The room was large, comfortable and clean. The breakfast was great, it included a hot selection too.The location is ok, about 4 miles out of Bar Harbor. You will have to drive to get food in the evening though.A recommended hotel. Stayed October 2012, traveled with friends
Thank FLYTHEW0RLD Report Ask FLYTHEW0RLD about BEST WESTERN Acadia Park Inn
This review is the subjective opinion of a TripAdvisor member and not of TripAdvisor LLC. meemee628
4 helpful votes “two beautifull days...”
had been to acadia a long time ago- did not see anything [foggy] so we gave it another shot. so happy we did --it was great !! the park is breathtaking, the hotel was very nice & we added a third night. hd enough lobster to last a lifetime. a great vacation...
Helpful? Thank meemee628 Report Ask meemee628 about BEST WESTERN Acadia Park Inn
We are so happy that you enjoyed your recent visit here in Bar Harbor.We look forward to having you as our guests again.Thank you . Jane
41 helpful votes “Back To The Future”
Redone 60's/70's style one-story motel north of Bar Harbor proper. Room was quite clean. Room was not worn at all. The car is right outside your door. Staff was friendly and helpful to guests (to a fault if you are in the back of the line). Beds were sleepable if not super plush. Breakfast was advertised as Continental, but quite varied and included hot items. (Pre-cooked mass-feeding hot items, but warm, kept fresh, and kept stocked. Within the meaning of a free motel breakfast rather good). This location is close to very good dining, and staff recommendations were accurate. Wireless worked well and the house computer fair. Bar Harbor is sort of an odd place to book yourself into. Not much very new at all. Lots of B&B's if you like that, but how do you pick a good one? Lots of 40's and 50's motels and cabins like you seldom see still operating farther west. (I could not decide if they looked quaint and appealing or just old and scary). This is one of the very few chain franchises. I have some difficulty placing this one in context. Its not in Bar Harbor let alone close to the downtown attractions, and not out in one of the waterfront villages in the west part of the park either. Its a good bet to the hit middle and be comfortable, but it seemed a bit high for what it is. But maybe that is what Bar Harbor goes for.
Thank jettybetty Report Ask jettybetty about BEST WESTERN Acadia Park Inn
This review is the subjective opinion of a TripAdvisor member and not of TripAdvisor LLC. MaryMandKenM
Our room had recently been rennovated. It was spacious, cleanly decorated and very comfortable. A nice surprise for a chain. Convenient location and pleasant service .We liked that they had a computer/printer available for guest use in the lobby, as we were able to book our boarding passes the day before.
Thank MaryMandKenM Report Ask MaryMandKenM about BEST WESTERN Acadia Park Inn
#25 of 40 in Bar Harbor 170 reviews
#15 of 40 in Bar Harbor 509 reviews
TripAdvisor is proud to partner with Expedia, Booking.com, Hotels.com, Priceline, Hotwire, Orbitz, Odigeo and Best Western + Iniative so you can book your BEST WESTERN Acadia Park Inn reservations with confidence. We help millions of travelers each month to find the perfect hotel for both vacation and business trips, always with the best discounts and special offers.
Explore similar hotels Hampton by Hilton Bar Harbor 380 ReviewsShow Prices 3.8 miles Bar Harbor Grand Hotel 1,086 ReviewsShow Prices 4.6 miles Quality Inn 170 ReviewsShow Prices 4.3 miles See all Bar Harbor hotels Browse nearby
Travelers also viewed: Hampton by Hilton Bar Harbor 380 Reviews 3.8 miles away Bar Harbor Grand Hotel 1,086 Reviews 4.6 miles away Quality Inn 170 Reviews 4.3 miles away Atlantic Oceanside Hotel and Event Center 993 Reviews 3.3 miles away Bar Harbor Inn 1,447 Reviews 4.5 miles away Acadia Inn 509 Reviews 3.5 miles away Bar Harbor Motel 1,426 Reviews 3.4 miles away Holiday Inn Bar Harbor Regency 964 Reviews 3.1 miles away Highbrook Motel 638 Reviews 3.6 miles away Bluenose Inn - A Bar Harbor Hotel 792 Reviews 3.7 miles away The Colony on Frenchman's Bay 135 Reviews 1.4 miles away

value: This website is an American online travel company that operates a website and mobile app with user-generated content and a comparison shopping website.


text:
Amazon.com: nokia 6750: Cell Phones & Accessories
Cell Phones & Accessories Contract Phones No-Contract Phones Unlocked Phones Accessories Cases Wearable Technology Best Sellers Deals Trade-In All Electronics 1-24 of 615 results for Cell Phones & Accessories : "nokia 6750"
"nokia 6750" Cancel
Nokia Mural 6750 Unlocked GSM Flip Phone with Second External OLED Display, 2MP Camera, Video, Bluetooth, MP3/...by Nokia$161.60new(3 offers)
80Li-Ion Polymer Replacement Battery BP-6MT (1050 mAh) for Nokia Mural 6750by Nokia$4.23$8.61More Buying Choices$4.23new(10 offers)$4.00used(1 offer)FREE Shipping
7See Color OptionsNokia 6350 Unlocked GSM Flip Phone with Second External TFT Display, 2MP Camera, Video, Internet Browser, GPS,...by Nokia$175.00new(2 offers)
230For Nokia 6650 6700 slide 6750 Mural Mural 7230 Horizontal Large Oversize Leather Case with Magnetic Closure,...by Auction4tech$7.95FREE ShippingLeather Case Cover Side Horizontal Pouch Holster With Belt Clip and Magnetic Closure For ATT Nokia 6350 6650 Fold...by Auction4tech$6.95FREE ShippingSee Color OptionsC&E Nokia Mural 6750 Phone Protector Case with Optional Belt Clip - Non-Retail Packaging - Blue Plaidby C&E$4.88Add-on ItemUsually ships in 2 to 6 monthsFREE Shipping on orders over $35Swivel Holster Belt Clip for Nokia Mural 6750 AT&T - Blackby Icella$12.99new(1 offer)See more choicesCombo Rapid Car Charger + Home Wall Charger + USB Data Charge Sync Cable for Nokia Mural 6750by Importer520$5.95More Buying Choices$5.95new(5 offers)FREE Shipping
8Nokia BP-6MT 1050mAh Battery Sealed in Retail Packaging for Nokia 6350 / E51 / Mural 6750 / N81 / N82by Nokia$8.36More Buying Choices$8.35new(5 offers)FREE Shipping
14Hard Plastic Snap on Cover Fits Nokia 6750 Mural Love Drops AT&T (Please carefully check your device model to...by Generic$24.99Only 3 left in stock - order soon.FREE ShippingFenzer Cell Phone Data Sync and Battery Charger Micro USB Cable for AT&T T-Mobile Nokia 6350, Astound C7, Lumia...by Unknown$2.19$19.99FREE Shipping
2Vertical Holster Leather Belt Clip Swivel Case Pouch Cover For ATT Nokia 6350 2680 Slide 6650 Fold Mural 6750by Auction4tech$7.75More Buying Choices$7.75new(2 offers)FREE Shipping
2See Color OptionsImporter520 2600mAh Ultra Compact Lipstick Size Portable Power Bank Backup External Battery Charger for For Samsung...by Importer520$9.95Only 5 left in stock - order soon.FREE Shipping
2Cellet BlackBerry 6710 6750 7730 7750 7780 Premium Plug In Chargerby Cellet$18.94$19.99Only 1 left in stock - order soon.More Buying Choices$2.99new(3 offers)FREE Shipping on orders over $35Vertical Holster Leather Belt Clip Swivel Case Pouch Cover For ATT Nokia 6350 Mural 6750 6650 Fold 2680 Slideby Auction4tech$5.75More Buying Choices$5.75new(2 offers)FREE ShippingBP-6MT Battery Americas Rp-stdby Nokia$3.99$59.95More Buying Choices$1.50new(12 offers)$2.59used(5 offers)FREE Shipping
23Nokia AC-6U Travel Charger - Original OEMby Nokia$6.29Add-on ItemOnly 12 left in stock - order soon.More Buying Choices$2.99new(7 offers)$4.99used(1 offer)FREE Shipping on orders over $35
12Nokia BP6MT Original OEM Battery - Non-Retail Packaging - Whiteby Nokia$5.97$19.91More Buying Choices$4.48new(8 offers)FREE Shipping
3Nokia CNE95103 DC-11K Extra Power Pack - Original OEM - Non-Retail Packaging - Greyby Nokia$29.18Only 1 left in stock - order soon.FREE Shipping on orders over $35
1Nokia CA-190CD Micro USB Charging and Data Cable - Original OEM - Non-Retail Packaging - Blackby Nokia$3.49More Buying Choices$3.99used(1 offer)FREE Shipping
15Nokia 6750 Mural Premium Horizontal Leather Case with Magnetic closure with belt clip and belt loopsby Marduc$8.49$25.00FREE ShippingMicro USB Premium Stylish Car Charger 1100 mAh for Motorola Nokia 1606/ 3555/ 3606/ 6205/ 6350/ 6555/ 2605 Mirage...by House of Stuff$4.73$14.99More Buying Choices$4.72new(2 offers)See Details10% off purchase of 2 items See DetailsFREE Shipping
2Nokia AC-10U Nokia AC-10U Micro-USB High Efficiency Charger - Original OEM - Non-Retail Packaging - Blackby Nokia$8.97new(1 offer)$2.99used(1 offer)
26Leather Sideways Belt Clip Case Pouch w/ Magnetic Closure for NOKIA Mural 6750by Auction4tech$6.95FREE Shipping
Cases, Holsters & Clips (153)

value: This website is an American multinational technology company which focuses on e-commerce, cloud computing, digital streaming, and artificial intelligence.


text:
hadoop - Reading HDFS and local files in Java - Stack Overflow
3 I want to read file paths irrespective of whether they are HDFS or local. Currently, I pass the local paths with the prefix file:// and HDFS paths with the prefix hdfs:// and write some code as the following
if (filePath.startsWith("hdfs://")) {
} else if (filePath.startsWith("file://")) {
fileSystem = FileSystem.getLocal(configuration).getRawFileSystem();
From here I use the API's of the FileSystem to read the file.
Can you please let me know if there is any other better way than this?
java hadoop mapreduce hdfs share|improve this question edited Jun 12 '13 at 20:28
14.1k41841
asked Jun 12 '13 at 18:20
Why are you unhappy with your current method?
I am not unhappy per se. I want my method takes in an object of Path and I was wondering from the Path if there is any method that can tell me if this path belongs to a local or HDFS file system. I tried to do a toString of the Path and do the comparision above but it didnt work. I am having to to a toURI().toString() on the Path and do this check.
I am not sure if I need to create a new post for this. I am sorry if I should have. Alternatively, my question is how do I find if a file path is HDFS or local if I have a Path and not a String. Would it be to do a toURI().toString() and do the check as I mentioned in my first post. Or to do a toURI() and check if the scheme. Thanks....
conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/core-site.xml"));
conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/hdfs-site.xml"));
System.out.println("Enter the file path...");
String filePath = br.readLine();
System.out.println(inputStream.available());
You don't have to put that check if you go this way. Get the FileSystem directly from Path and then do whatever you feel like.
share|improve this answer edited Jul 25 '14 at 19:06
Jun 12 '13 at 20:36
You are welcome Venk. Looks better after a small edit.
You can get the FileSystem by the following way:
Path path = new Path(stringPath);
You do not need to judge if the path starts with hdfs:// or file://. This API will do the work.
share|improve this answer edited Jun 13 '13 at 5:41
answered Jun 13 '13 at 1:48
5,19421128
set a flag in the main(String[] args) method
and run different main-java-class
share|improve this answer answered Jun 13 '13 at 9:21
S3 HDFS with No File Owner - AccessControlException
Reading files from hdfs vs local directory
Passing Hadoop program commands through Java Program
HDFS - Will having variable block-sizes cause an issue with non-splitable files

value: This website is a question and answer website for professional and enthusiast programmers. It is the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky.